package com.tianyu.inspection.service.api;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.tianyu.inspection.entity.UploadFile;
import com.tianyu.inspection.entity.vo.ServiceRo;
import org.springframework.ui.ModelMap;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**********************************
 * @Author YSW
 * @Description 文件管理服务
 * @Date 2021/1/20 - 15:48
 **********************************/

public interface IUploadFileService extends IBaseService<UploadFile> {

    /**
     * OSS单文件上传
     *
     * @param multipartFile 单文件对象
     * @param category      文件类别
     * @param projectId     项目ID
     * @param userId        用户ID
     * @return 上传地址
     */
    ServiceRo ossUpload(MultipartFile multipartFile, Integer category, Integer projectId, Integer userId);

    /**
     * OSS多文件上传
     *
     * @param multipartFiles 多文件数组
     * @param category       文件所属分类号
     * @param projectId      项目ID
     * @param userId         用户ID
     * @return 文件地址列表
     */
    List<String> ossUploads(MultipartFile[] multipartFiles, Integer category, Integer projectId, Integer userId);

    /**
     * 存储文件清理
     *
     * @return 文件地址列表
     */
    ModelMap ossCleanUselessly();

    /**
     * 存储文件分析
     *
     * @return 文件地址列表
     */
    void fileStatisticalAnalysisScheduled();

    /**
     * 存储文件分析
     *
     * @return 文件地址列表
     */
    ModelMap fileStatisticalAnalysis();

    JSONObject ocsPutUrlGet(Integer basicInformationId,String modelId,String pathPrefix, JSONArray objPathForUpload);

    JSONObject ocsPutUrlCacheGet(String modelId);

    JSONObject ocsPutGroupProgress(String modelId);

    String ocsPutUrlGet(String pathPrefix, String objPathForUpload);
}
